Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Лабораторна робота №2 Засоби графічного виведення на екран

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
Інформаційних систем та мереж (ІСМ)

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Проблемно орієнтоване програмування
Варіант:
17 17 9

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ІНФОРМАЦІЙНИХ СИСТЕМ ТА МЕРЕЖ / ЗВІТ про виконання лабораторної роботи № 2 “ Засоби графічного виведення на екран” з дисципліни “Проблемно-орієнтоване програмування” Варіант 17 Львів 2016 Мета роботи: полягає у вивченні API-функцій для виведення текстової та графічної інформації у вікно програми для Windows. Теоретичні відомості: При посилці повідомлення WM_PAINT - Викликаємо функції малювання BeginPaint(),GetClientRect(), SetTextColor(), DrawText(), EndPaint(). За назвою видно, що ці функції роблять. Функція BeginPaint() в прямому сенсі починає малювати. Тільки для цього їй потрібно мати дескриптор вікна і об'єкт PAINTSTRUCT (у нас це ps). Вона повертає значення типу HDC, тому нам потрібно присвоїти їй hDc. GetClientRect() вибирає область. Параметри у неї аналогічні попередній функції: дескриптор вікна і покажчик на об'єкт класу RECT (у нас це rect). Функція SetTextColor()повертає колір тексту. Її параметри: повертається значення функції BeginPaint() - hDC і покажчик на об'єкт класу COLORREF. Ми могли і не задавати окремо колір тексту, створюючи при цьому змінну colorText, а могли зробити це прямо в ній. Але з точки зору читання коду і його тями - це в корені не правильно. Намагайтеся завжди оголошувати змінні окремо і писати в коментарях, навіщо вони потрібні і тоді не буде питань, які параметри має функція, через рік як ви останній раз закрили проект по WinAPI. Також дотримуйтесь угорську нотацію з програмування, суть якої: імена змінних повинні нести сенс їхнього існування і показувати тип даних. Оголошення функції DrawText(): 1 3 4 5 6 7 int DrawText(    HDC hDC,// дескриптор контекста устр-ва    LPCTSTR lpchText, // указатель на нашу строку    int nCount, // длина текста (если равно -1, то определяет сам)    LPRECT lpRect, // указатель на объект RECT    UINT uFormat // формат отображения текста );   На рахунок перших 4х параметрів все ясно. Четвертий uFormat - Має декілька видів. Зазвичай використовуються DT_SINGLELINE, DT_CENTER і DT_VCENTER для відображення тексту в центрі області, в одну лінію. Але Ви можете змінити параметри (про що поговоримо в наступних уроках). Функція EndPaint() має два параметри: дескриптор вікна і об'єкт ps. Помітили аналогію з BeginPaint()? Що робити при виклику WM_PAINT, ми знаємо (не забуваємо в кінці дописати break).WM_DESTROY надсилається віконця функцією DestroyWindow(), яка викликається у разі, якщо ми його закрили. А це відбувається в операторі default.  Варіант №17 Порядок виконання роботи Написати програму (або змінити наведену у роботі програму) для виведення графіка функції: / Код програми: #include "stdafx.h" #include "Resource.h" #include <math.h> BOOL RegClass(WNDPROC, LPCTSTR, UINT); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInstance; wchar_t szClassName[] = L"GraphClass"; typedef struct { wchar_t name[20]; float x[50]; float y[50]; } FUNC; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { MSG msg; HWND hwnd; ::hInstance = hInstance; if (!RegClass(WndProc, szClassName, COLOR_WINDOW)) return FALSE; hwnd = CreateWindow(szClassName, L"Гpaфік функції y=sinh(x)", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1500, 1000, 0, 0, hInstance, NULL); if (!hwnd) return FALSE; while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg); return msg.wParam; } BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground) { WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.cbClsExtra = wc.cbWndExtra = 0; wc.lpfnWndProc = Proc; wc.hInstance = hInstance; wc.lpszClassName = szName; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALL)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(HBRUSH)(brBackground + 2); wc.lpszMenuName = NULL; return (RegisterClass(&wc) != 0); } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPa...
Антиботан аватар за замовчуванням

10.11.2016 20:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини